struct S {
  int a[5];
} s1{{1, 2}}, s2;

// 数组可以作函数参数，但不能作为返回类型、也不能赋值。
// 结构体既可以作参数，也可以作为返回类型、还可以赋值。
// 有趣的地方来了：结构体里面可以有数组成员:)
S foo(const S& s) { return S{{s.a[0]}}; }

int main() {
  s2 = foo(s1); // 这句验证了结构体三个特性：作为参数、作为返回值、赋值。
}